﻿using System.Linq;
using Inovout.Data.Domain;

namespace Inovout.Data.Service
{
    /// <summary>
    /// 针对Controller的RepositoryService接口定义
    /// </summary>
    /// <typeparam name="TEntity">实体类型</typeparam>
    public interface IRepositoryForControllerService<TEntity> : IRepositoryService<TEntity>
    {
        /// <summary>
        /// 基于NHibernate的IQueryable对象实例。有状态的Session。
        /// </summary>
        /// <typeparam name="TModel">模型类型</typeparam>
        /// <param name="queryCriteria">查询规则对象实例</param>
        /// <returns>有状态的IQueryable对象实例</returns>
        IQueryable<TEntity> Query(QueryCriteria queryCriteria);

        /// <summary>
        /// 基于NHibernate的IQueryable对象实例。有状态的Session。
        /// </summary>
        /// <typeparam name="TEntity">模型类型</typeparam>
        /// <param name="queryCriteria">查询规则对象实例</param>
        /// <returns>无状态IQueryable对象实例</returns>
        IQueryable<TEntity> StatelessQuery(QueryCriteria queryCriteria);
    }
}
